#include "tabelathreads.h"
#include <QDebug>

TabelaThreads::TabelaThreads(QTableWidget * tabelaThreads, int numeroProdutor, int numeroConsumidor, Produtor ** produtor, Consumidor ** consumidor)
{
	if (numeroConsumidor > numeroProdutor) tabelaThreads->setRowCount(numeroConsumidor);
	else tabelaThreads->setRowCount(numeroProdutor);

	this->tabelaThreads = tabelaThreads;
	this->consumidor = consumidor;
	this->produtor = produtor;
	this->numeroProdutor = numeroProdutor;
	this->numeroConsumidor = numeroConsumidor;
	tabelaThreads->setColumnCount(4);

	//Colocando Headers da Tabela de Threads
	QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg("Threads Produtor"));
	tabelaThreads->setHorizontalHeaderItem(0,newItem);
	newItem = new QTableWidgetItem(tr("%1").arg("Estado"));
	tabelaThreads->setHorizontalHeaderItem(1,newItem);
	newItem = new QTableWidgetItem(tr("%1").arg("Threads Consumidor"));
	tabelaThreads->setHorizontalHeaderItem(2,newItem);
	newItem = new QTableWidgetItem(tr("%1").arg("Estado"));
	tabelaThreads->setHorizontalHeaderItem(3,newItem);


	// Colocando nomes das Threads na tabela
	QString thread = "Thread ", number, string;

	for(int i = 0; i < numeroProdutor; i++) {

			string = thread + number.number(i);
			newItem = new QTableWidgetItem(tr("%1").arg(string));
			tabelaThreads->setItem(i, 0, newItem);
	}

	for(int j = 0; j < numeroConsumidor; j++) {

			string = thread + number.number(j);
			newItem = new QTableWidgetItem(tr("%1").arg(string));
			tabelaThreads->setItem(j, 2, newItem);
	}

	tabelaThreads->resizeColumnToContents(0);
	tabelaThreads->resizeColumnToContents(2);

	tabelaThreads->setColumnWidth(1, 200);
	tabelaThreads->setColumnWidth(3, 200);

}

void TabelaThreads::atualiza(){

		QTableWidgetItem *newItem;

		for(int i = 0; i < numeroProdutor; i++) {
				tabelaThreads->setItem(i, 1, new QTableWidgetItem(tr("%1").arg(produtor[i]->getEstadoAtualS())));
		}

		for(int j = 0; j < numeroConsumidor; j++) {
				tabelaThreads->setItem(j, 3, new QTableWidgetItem(tr("%1").arg(consumidor[j]->getEstadoAtualS())));
		}

}
void TabelaThreads::run(){
				while(1){
						atualiza();
						sleep(1);
				}
}
